package com.ycj.design.create.singleton;

/**
 * 静态内部类
 * 这种方式跟饿汉式采用的机制类似，但又不同。两者都是采用了类装载的机制来保证初始化实例时只有一个线程。
 * 不同的地方在饿汉式是只要类装载就会实例化，没有懒加载的作用，造成资源的浪费，
 * 而静态内部类方式在SingletonPatternSeven被装载时不会立即实例化，而是在需要实例化时，
 * 调用getInstance方法，才会装载SingletonInstance类，从而完成Singleton的实例化。
 * 类的静态属性只会在第一次加载类的时候初始化，所以在这里，jvm帮助我们保证了线程的安全性，在类进行初始化时，
 * 别的线程时无法进入的
 * 优点：避免了线程不安全，延迟加载，效率高。
 * @author chuanjieyang
 * @date Nov 20, 2018 12:15:23 PM
 */
public class SingletonPatternSeven {
    private SingletonPatternSeven(){}
       
    private static class SingletonPatternServenInstance{
        private static final SingletonPatternSeven INSTANCE = new SingletonPatternSeven();
    }
    
    public static SingletonPatternSeven getInstance(){
        return SingletonPatternServenInstance.INSTANCE;
    }


}
